/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import connection.AbstractConnection;
import entidades.Produto;
import entidades.Trilha;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ricardo
 */
public class TrilhaDAO extends AbstractDAO {
    
    private final String sqlTrilhaByProduto =
            "select * from trilha where produto_idproduto=?";
    private final String sqlDelete =
            "delete from trilha where produto_idproduto=?";
    private final String sqlInsertTrilha =
            "insert into trilha (idtrilha,produto_idproduto,numero_trilha,titulo) values (?,?,?,?)";

    public TrilhaDAO(AbstractConnection conn) {
        super(conn);
    }
    
    public List<Trilha> getListaByProduto(int id) throws SQLException {
        List<Trilha> result = new ArrayList<Trilha>();
        
        PreparedStatement ps = conn.getConnection().prepareStatement(sqlTrilhaByProduto);
        ps.setInt(1, id);
        ResultSet rs = ps.executeQuery();
        
        while (rs.next()) {
            result.add(createTrilha(rs));
        }
        
        conn.closeConnection();
        
        return result;
    }
    
    public void removeByProduto(Produto produto) throws SQLException {
        PreparedStatement ps = conn.getConnection().prepareStatement(sqlDelete);
        
        ps.setInt(1, produto.getId());
        ps.executeQuery();
        
        conn.closeConnection();
    }
    
    public void insertTrilha(List<Trilha> trilhas,Produto produto) throws SQLException {
        int id = getNextId("trilha", "idtrilha");
        
        removeByProduto(produto);
        for (Trilha trilha : trilhas) {
            insertTrilha(trilha,id++,produto.getId());
        }
        
    }
    
    public void insertTrilha(Trilha trilha,int id,int idProduto) throws SQLException {
        PreparedStatement ps = conn.getConnection().prepareStatement(sqlInsertTrilha);
        ps.setInt(1, id);
        ps.setInt(2, idProduto);
        ps.setInt(3, trilha.getNumeroTrilha());
        ps.setString(4, trilha.getTitulo());
        ps.executeQuery();
        conn.closeConnection();
    }
    
    private Trilha createTrilha(ResultSet rs) throws SQLException {
        Trilha t = new Trilha();
        t.setId(rs.getInt("idtrilha"));
        t.setNumeroTrilha(rs.getInt("numero_trilha"));
        t.setTitulo(rs.getString("titulo"));
    
        return t;
    }
    
}
